package org.mokusakura.persistence.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.mokusakura.domain.User;

@Mapper
public interface UserMapper {
    /**
     * <p>根据email选取User，User的cart为null,bannerName为null </p>
     *
     * @param email email
     * @return User without cart
     */
    User selectUserByEmail(String email);

    /**
     * <p>根据Id选取User</p>
     *
     * @param userId - userId
     * @return - User without cart
     */
    User selectUserByUserId(Integer userId);

    /**
     * 用于优化登录
     *
     * @param email    - email
     * @param password - 密码
     * @return 都正确则返回一个User，否则返回null
     */
    User selectUserByEmailAndPassword(String email, String password);

    /**
     * <p>插入新用户进loginuser表，成功返回后，user中的id会被设置为自增的主键id </p>
     *
     * @param user 需插入的用户
     * @return 返回1插入成功，返回0插入失败
     */
    Integer insertUserIntoLoginUser(User user);

    /**
     * 插入新用户进Account表
     *
     * @param user - 待插入的用户
     * @return 返回1插入成功，返回0插入失败
     */

    Integer insertUserIntoAccount(User user);

    /**
     * 插入新用户进UserFile表
     *
     * @param user 待插入的用户
     * @return 返回1插入成功，返回0插入失败
     */

    Integer insertUserIntoUserFile(User user);

    /**
     * <p>根据user的id更新loginuser表的信息 </p>
     *
     * @param user 需更新的用户，根据id属性更新
     * @return 返回1更新成功，返回0更新失败
     */
    Integer updateUserInLoginUser(User user);


    /**
     * <p>根据user的id更新loginuser表的信息 </p>
     *
     * @param user 需更新的用户，根据id属性更新
     * @return 返回1更新成功，返回0更新失败
     */
    Integer updateUserInAccount(User user);

    /**
     * <p>根据user的id更新loginuser表的信息 </p>
     *
     * @param user 需更新的用户，根据id属性更新
     * @return 返回1更新成功，返回0更新失败
     */
    Integer updateUserInUserFile(User user);

    /**
     * <p>查询phoneNumber是否存在</p>
     *
     * @param phoneNumber-要查询的phone
     * @return 存在返回user，不存在返回null
     */
    User selectUserByPhoneNumber(String phoneNumber);
}
